{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# k 均值聚类教程"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 0. 依赖"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "# 调用sklearn中的方法直接生成数据\n",
    "from sklearn.datasets.samples_generator import make_blobs"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1. 数据加载和预处理"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(100, 2)\n"
     ]
    }
   ],
   "source": [
    "x, y = make_blobs(n_samples=100, centers=6, random_state=1234, cluster_std=0.6)\n",
    "#print(x,y)\n",
    "plt.figure(figsize=(6,6))\n",
    "plt.scatter(x[:,0],x[:,1],c=y)\n",
    "plt.show()\n",
    "print(x.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 2. 算法实现"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [],
   "source": [
    "from scipy.spatial.distance import cdist\n",
    "\n",
    "class K_Means():\n",
    "    # 初始化，参数k、迭代次数、初始中心点\n",
    "    def __init__(self, k_cluster=6, max_iter=100, centroids=[]):\n",
    "        self.k_cluster = k_cluster\n",
    "        self.max_iter = max_iter\n",
    "        self.centroids = np.array(centroids, dtype=np.float)\n",
    "    \n",
    "    def fit(self,data):\n",
    "        # 如果没有中心点，在data中随机选取作为初始中心点\n",
    "        if(self.centroids.shape==(0,)):\n",
    "            self.centroids = data[np.random.randint(0,data.shape[0],self.k_cluster),:]\n",
    "            \n",
    "        for i in range(self.max_iter):\n",
    "            # 计算距离矩阵，记录所有数据点和所有中心点的距离，算出来一个100*6的矩阵\n",
    "            distances = cdist(data, self.centroids)\n",
    "            \n",
    "            # 选取距离最近的中心点，做分类\n",
    "            c_index = np.argmin(distances, axis=1)\n",
    "            \n",
    "            # 计算每类数据的均值，就是分类之后新的中心点\n",
    "            for i in range(self.k_cluster):\n",
    "                # 只对有效的类别做计算\n",
    "                if i in c_index:\n",
    "                    self.centroids[i] = np.mean(data[c_index==i],axis=0)\n",
    "    \n",
    "    def predict(self, test):\n",
    "        distances = cdist(test, self.centroids)\n",
    "            \n",
    "        # 选取距离最近的中心点，做分类\n",
    "        c_index = np.argmin(distances, axis=1)\n",
    "        return c_index"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 3. 测试"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[ 5.76444812 -4.67941789]\n",
      " [-2.89174024 -0.22808556]\n",
      " [-5.89115978  2.33887408]\n",
      " [-4.53406813  6.11523454]\n",
      " [-1.15698106  5.63230377]\n",
      " [ 9.20551979  7.56124841]]\n",
      "[5 1]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x7f0aeb281518>"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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YaPYuuc3N5zGhDFdb8Y617Qqm4kvAmclKdlsa7E1D271Q2YRkY5CV0g9YPy9oWBnoPkw1xAUntTGgwdTDwu4b3Xq+qPGV4wpGLT1wANwqt0wTftY5fZWKSIi0qG4kwAOTPNICApPbuPRw6QPZ19yVv1mtbQ2m2010MIyNE7F9hYpIuIJNaQeMV1ucYfJEkluiEDBcEzRD9t24NChpP8kN4iJnLLjxw3s3sJxQ8nhRSIiIrnNdL01mc3JJtFEILA7puiCth04dBgtZnNbPogOjCL9rPlhZbOI5AwN2fWICewKvV5xJxZyVrrLvAQP2bLsy44e1xRC179jN16M+2lscnbe4p9gAqPacNwgtvR6qLiKTRMyQCH4+2IiZ7epZhERkY7ABHZrlM2bln05qO3Z7CuCrn/DbvwxTbK55GeYwO47flwTwpb8Dip/TZNsLhi4XUvEiYh4SQ2ph4yvCCKTMn/c0AHQ6y1oeBVsrbvki793m4/rK/wutmAoNvqQuz5baAImcrLbBIuIiOQB4yuGyGmZP27oIOj1JtS/CtQns7lXm4/ri5yIDeyKjf4LnDUQPBwTOQljwm0vWkQkC9SQ5inji0B4YuaPG9jNnaFXREREtovxFUHhcZk/bmAkpsv1GT+uiEg26B5SERERERER8YQaUhEREREREfGEGlIRERERERHxhBpSERERERER8YQaUhEREREREfGEGlIRERERERHxhBpSERERERER8YQaUhEREREREfGEGlIRERERERHxhBpSERERERER8YQaUhEREREREfGEGlIRERERERHxhBpSERERERER8USbGlJjzM3GmM+MMQuMMY8bY7pmqjARERHZfspmERHJJW29QjobGGWtHQMsAq5qe0kiIiLSBspmERHJGW1qSK21L1hr48lf3wEGtr0kERER2VHKZhERySWZvIf0AmBWBo8nIiIibaNsFhGRDq1gWzsYY14E+qZ56Gpr7czkPlcDceChrRynDCgDGDx48A4VKyIiIspmERHJH9tsSK21R27tcWPMFOB44Ahrrd3Kce4E7gQYO3Zsi/uJiIjI1imbRUQkX2yzId0aY8yxwC+Aw6y10cyUJCIiIjtK2SwiIrmkrfeQ3gaUALONMR8aY/6RgZpERERkxymbRUQkZ7TpCqm1dlimChEREZG2UzaLiEguyeQsuyIiIiIiIiKtpoZUREREREREPKGGVERERERERDyhhlREREREREQ8oYZUREREREREPKGGVERERERERDyhhlREREREREQ8oYZUREREREREPKGGVERERERERDyhhlREREREREQ8oYZUREREREREPKGGVERERERERDyhhlREREREREQ8oYZUREREREREPKGGVERERERERDyhhlREREREREQ8oYZUREREREREPKGGVERERERERDyhhlREREREREQ8oYZUREREREREPKGGVERERERERDyhhlREREREREQ8oYZUREREREREPKGGVETyWl0sTiyR8LoMERERSVI2S2MFXhcgItIePluxht88OpvPlq/GGBjcoyuFwQA79ejKeYfsy6iBfb0uUUREpFP55NtVXPPYi3y+Yo2bzT27URgoYKee3ZhyyL7sMaCP1yWKB9SQikjeWVNZzXl3PEJ1fYO7wcKSNRsA+GT5al76dAm/P+0Yjh493MMqRUREOo+VFVVMuWs6NfUxd4OFJavXA/Dp8jW89Ek5N59xHN8ZOdTDKsULGrIrInnnkfcW0tDCUCBr3aFCv3tiDgnHyXJlIiIindO/35lPQzx9NjvWUheL89vHX8RxbJYrE6+pIRWRvPPFqnUtht4m9bE4y9ZXZKkiERGRzm3xqnXEElv/ILimvoHlGyuzVJF0FGpIRSTv7DW4L+HA1u9IiCUcZn/0BQu+XoG1+jRWRESkPY0Z3I9QgX+r+8QTDi989AUfLVuZpaqkI8hIQ2qMucIYY40xPTNxPBGRtjh57CgiwQA+Y1rcx1rL7XPe5YK7Z/DDex6lIR7PYoUi7U/ZLCIdyen7jaZwW9mM5bbZbzPlzumU3fvYNkc7SX5oc0NqjBkEHA183fZyRETarkthmP9cehZHj9qVwkAB4UABfp+hOBRkUw4mrKU+Hqc2Fue/S1dwz6tzvS1aJIOUzSLS0XQtKmT6pWdz5B7DWs5mZ0s2f/DVtzzwxjxvi5asyMQsu7cCvwBmZuBYIiIZ0b9rKVPP+u7m3ytq65j31bf89MGnidum97DUx+M8OvcjLj5ifLbLFGkvymYR6XD6dyvl1rOP3/z7xmgdc79cxhUPP0O82f2ldbE4M95fyA8n7JftMiXL2nSF1BhzIvCttXZ+huoREWkXXQrD7DmoHy2NFGoehCK5StksIrmiayTMnoP6tjiMV9ncOWzz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S48ZYy4GHkuG3HvGGAfoCaxJc5w7gTsBxo4dmxKKIiIi0jrKZhERyRdtHbL7BHA4gDFmOBAE1ra1KBEREdlhymYREckZbV2H9F7gXmPMR0ADcF66IUEiIiKSNcpmERHJGW1qSK21DcDkDNUiIiIibaRsFhGRXNLWIbsiIiIiIiIiO0QNqYiIiIiIiHhCDamIiIiIiIh4Qg2piIiIiIiIeKKts+yKiHR4X63ZwLQ357FkzXr2GTKAsw7Yix7FEa/LEhER6bSWrF7PtLfm8dWaDYzdeSBnjt+T7srmTkkNqYjktfeXLONH9z1OLJEg4Vg+/HoF/35nPo9cehYDunXxujwREZFO553yr/nx/TOJxRMkrGX+1yv419sfMuOyyfTrWuJ1eZJlGrIrInnLWstvHptNXSxOwnGXYWyIJ6isredPz7/pcXUiIiKdj7WWX89IZnNyieT6eIKq2nr+Ovstj6sTL6ghFZG8VRGtY8XGypTtjrW8uWipBxWJiIh0buuqo6ytrknZnrCW1z//0oOKxGtqSEUkb4UCLd+VUBwOZrESERERASgMBrDJK6PNFYdDWa5GOgI1pCKStwqDAb4zcigBv7/J9nCggLMP3MujqkRERDqvolCQQ0fsTMDftA0pDBQw+cC9PapKvKSGVETy2u9OOYo9B/clHCigOBwkWODnuD1HKPREREQ8cv2koxk1sGk2H7/37pw5fk+vSxMPaJZdEclrJeEQ95edTvnqdSzfUMnwvr3o06XY67JEREQ6rdLCMA/+6PssXrWOFRsrGdGvF71Llc2dlRpSEekUhvbuwdDePbwuQ0RERJKG9enBsD7K5s5OQ3ZFRERERETEE2pIRURERERExBNqSEVERERERMQTakhFRERERETEE2pIRURERERExBNqSEVERERERMQTakhFRERERETEE2pIRURERERExBNqSEVERERERMQTakhFRERERETEE8Zam/0XNWYNsDTrL5xZPYG1XhfRTnRuuSdfzwt0brkq2+e2k7W2VxZfL+8omzs8nVvuydfzAp1bruqQ2exJQ5oPjDFzrbVjva6jPejcck++nhfo3HJVPp+bdFz5/Henc8s9+XpeoHPLVR313DRkV0RERERERDyhhlREREREREQ8oYZ0x93pdQHtSOeWe/L1vEDnlqvy+dyk48rnvzudW+7J1/MCnVuu6pDnpntIRURERERExBO6QioiIiIiIiKeUEPaSsaY3xpjvjXGfJj8Oq6F/Y41xnxujFlsjLky23XuCGPMzcaYz4wxC4wxjxtjuraw31fGmIXJ85+b7Tq3x7beB2NMyBjzn+Tj7xpjhmS/yu1jjBlkjHnZGPOJMeZjY8xP0uwzwRhT0ejv9Dde1LojtvX3ZVx/Sb5nC4wx+3hR5/Yyxoxo9H58aIypNMb8tNk+OfO+GWPuNcasNsZ81Ghbd2PMbGPMF8nv3Vp47nnJfb4wxpyXvaolXymblc1eUzYrmzuCnM9ma62+WvEF/Bb4323s4wfKgV2AIDAfGOl17a04t6OBguTPNwI3trDfV0BPr+ttxfls830ALgH+kfz5DOA/XtfdivPqB+yT/LkEWJTmvCYAT3td6w6e31b/voDjgFmAAcYD73pd8w6cox9YibsuV06+b8ChwD7AR4223QRcmfz5ynT/GwJ0B5Ykv3dL/tzN6/PRV25/KZuVzV5/KZuVzR3hK9ezWVdIM2scsNhau8Ra2wD8GzjR45q2yVr7grU2nvz1HWCgl/VkQGvehxOB+5M/zwCOMMaYLNa43ay1K6y185I/VwGfAgO8rSqrTgQesK53gK7GmH5eF7WdjgDKrbVLvS5kR1lrXwPWN9vc+N/T/cBJaZ56DDDbWrveWrsBmA0c226FimyhbO4YlM35SdncAeR6Nqsh3T6XJocj3NvCZe8BwDeNfl9G7v2P0gW4n3SlY4EXjDEfGGPKsljT9mrN+7B5n2TgVwA9slJdBiSHMe0NvJvm4QOMMfONMbOMMXtktbC22dbfVz78+zoDeLiFx3L1fQPoY61dkfx5JdAnzT758P5Jx6RsVjZ3CMpmIDf/fSmbt/Dk/SvI9gt2ZMaYF4G+aR66Gvg7cB3uP8zrgKm4AZETtnZu1tqZyX2uBuLAQy0c5mBr7bfGmN7AbGPMZ8lPZCSLjDHFwKPAT621lc0enoc75KQ6eS/VE8Cu2a5xB+X135cxJgicAFyV5uFcft+asNZaY4ymb5eMUTYrm3OBsjk3KZs7BjWkjVhrj2zNfsaYu4Cn0zz0LTCo0e8Dk9s8t61zM8ZMAY4HjrDJQeVpjvFt8vtqY8zjuMNvOuL/KLXmfdi0zzJjTAHQBViXnfJ2nDEmgBt4D1lrH2v+eOMQtNY+a4y53RjT01q7Npt17ohW/H112H9frTQRmGetXdX8gVx+35JWGWP6WWtXJIdqrU6zz7e49+NsMhB4JQu1SY5TNiubs1PejlM2d8x/X62kbO4A2awhu63UbDz8ycBHaXZ7H9jVGLNz8hOXM4Ans1FfWxhjjgV+AZxgrY22sE+RMaZk08+4ky2k+2/QEbTmfXgS2DST2CTgpZbCvqNI3kdzD/CptfaWFvbpu+l+G2PMONx/47kQ5q35+3oSONe4xgMVjYai5IIzaWFIUK6+b400/vd0HjAzzT7PA0cbY7olh1UendwmssOUzcpmrymblc0dWO5kc6ZnScrXL2AasBBYgPsG90tu7w8822i/43BnWCvHHXLjee2tOLfFuOPHP0x+bZrhbvO54c6KNz/59XFHP7d07wNwLW6wA4SB6clzfw/YxeuaW3FOB+MOS1vQ6L06DvgR8KPkPpcm35/5uJNgHOh13a08t7R/X83OzQB/S76nC4GxXte9HedXhBtiXRpty8n3DTe4VwAx3HtNfoB7j9cc4AvgRaB7ct+xwN2NnntB8t/cYuB8r89FX7n/pWxWNnv9pWxWNneEr1zPZpMsRERERERERCSrNGRXREREREREPKGGVERERERERDyhhlREREREREQ8oYZUREREREREPKGGVERERERERDyhhlREREREREQ8oYZUREREREREPKGGVERERERERDzx/wFoGiQq541NUQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1152x432 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plotKMeans(x, y, centroids, subplot):\n",
    "    plt.subplot(subplot)\n",
    "    plt.scatter(x[:,0], x[:,1],c=y)\n",
    "    plt.scatter(centroids[:,0],centroids[:,1],s=100,c='r')\n",
    "\n",
    "kmeans = K_Means(centroids = np.array([[2,1],[2,2],[2,3],[2,4],[2,5],[2,6]]))\n",
    "\n",
    "plt.figure(figsize=(16,6))\n",
    "plotKMeans(x, y, kmeans.centroids, 121)\n",
    "\n",
    "# 开始聚类\n",
    "kmeans.fit(x)\n",
    "print(kmeans.centroids)\n",
    "\n",
    "plotKMeans(x, y, kmeans.centroids, 122)\n",
    "\n",
    "# 做出预测\n",
    "x_new = np.array([[10,7],[0,0]])\n",
    "y_pred = kmeans.predict(x_new)\n",
    "\n",
    "print(y_pred)\n",
    "\n",
    "plt.scatter(x_new[:,0],x_new[:,1],s=100,c=\"black\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
